#include <iostream>
using namespace std;

template <class T>
struct Node
{
   T data;
   Node *left;
   Node *right;
};

class solution {

    private:
    // 用于统计二叉树中叶子结点的数量
        int total = 0;

        // 用于遍历二叉树，寻找叶子结点
        void dfs(Node <int> *root)
        {
            //如果左右结点都是空的，说明就是叶子结点，数量加一
            if(root->left == NULL && root-> right == NULL){
                total++;
                return;
            }

            // 左结点不为空，向左递归
            if(root->left != NULL){
                dfs(root->left);
            }

            // 右节点不为空，向右递归
            if(root->right != NULL){
                dfs(root->right);
            }

            return;

    }
   public:
    // 用于统计二叉链表中叶子结点的个数,
    // 传入参数是二叉树的根结点的指针
        int Statistics(Node<int> *root){

            dfs(root);

            return total;
        }
};